package com.ruoyi.ldzlsb.mapper;

import java.util.List;
import com.ruoyi.ldzlsb.domain.SbInspectionPlan;
import org.apache.ibatis.annotations.Param;

/**
 * 巡检计划Mapper接口
 * 
 * @author anli
 * @date 2025-01-11
 */
public interface SbInspectionPlanMapper 
{
    /**
     * 查询巡检计划
     * 
     * @param planId 巡检计划主键
     * @return 巡检计划
     */
    public SbInspectionPlan selectSbInspectionPlanByPlanId(Long planId);

    /**
     * 查询巡检计划列表
     * 
     * @param sbInspectionPlan 巡检计划
     * @return 巡检计划集合
     */
    public List<SbInspectionPlan> selectSbInspectionPlanList(SbInspectionPlan sbInspectionPlan);

    /**
     * 查询巡检计划列表（包含关联信息）
     * 
     * @param sbInspectionPlan 巡检计划
     * @return 巡检计划集合
     */
    public List<SbInspectionPlan> selectSbInspectionPlanWithInfoList(SbInspectionPlan sbInspectionPlan);

    /**
     * 新增巡检计划
     * 
     * @param sbInspectionPlan 巡检计划
     * @return 结果
     */
    public int insertSbInspectionPlan(SbInspectionPlan sbInspectionPlan);

    /**
     * 修改巡检计划
     * 
     * @param sbInspectionPlan 巡检计划
     * @return 结果
     */
    public int updateSbInspectionPlan(SbInspectionPlan sbInspectionPlan);

    /**
     * 删除巡检计划
     * 
     * @param planId 巡检计划主键
     * @return 结果
     */
    public int deleteSbInspectionPlanByPlanId(Long planId);

    /**
     * 批量删除巡检计划
     * 
     * @param planIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSbInspectionPlanByPlanIds(Long[] planIds);

    /**
     * 根据设备ID查询巡检计划
     * 
     * @param equipmentId 设备ID
     * @return 巡检计划集合
     */
    public List<SbInspectionPlan> selectSbInspectionPlanByEquipmentId(Long equipmentId);

    /**
     * 根据巡检人员ID查询巡检计划
     * 
     * @param inspectorId 巡检人员ID
     * @return 巡检计划集合
     */
    public List<SbInspectionPlan> selectSbInspectionPlanByInspectorId(Long inspectorId);
    
    /**
     * 根据配置ID查询巡检计划
     * 
     * @param configId 配置ID
     * @return 巡检计划集合
     */
    public List<SbInspectionPlan> selectSbInspectionPlanByConfigId(Long configId);
    
    /**
     * 检查计划编号是否唯一
     * 
     * @param planCode 计划编号
     * @return 巡检计划信息
     */
    public SbInspectionPlan checkPlanCodeUnique(String planCode);
    
    /**
     * 统计当天巡检计划数量
     * 
     * @return 当天巡检计划数量
     */
    public int countTodayInspectionPlans();
} 